Various users across the globe communicate or perform various activities on computer and device networks. Moreover, the users interact with each other through the networks, such as the Internet. Typically, the users use devices like personal computers to interact over the Internet. The users can interact from various Internet websites or social networking sites, for example, Facebook, Myspace, Hi5, and Orkut etc. Recently, the development in mobile devices such as cell phones, smartphones and PDAs, computers, laptops and the like has enabled them to be used for performing various activities on networks such as the Internet. Moreover, the mobile devices can be used for real-time interaction with other users on the network. The interaction or communication can be in the form of chatting, playing interactive online games, browsing, shopping, music, video, banking, business and the like.
The rapid pace of innovation in technology has generated various types of devices and platforms. Moreover, the number of devices is increasing rapidly. For example, there are various operating systems available for the devices such as Windows, Linux, Macintosh, Android, and Symbian, etc. Moreover, a large number of J2ME platforms are available for the mobile devices such as cell phones. Furthermore, the mobile devices have a wide range of capabilities in terms of screen size, screen type, screen resolution, processor, and memory etc. The applications for these devices have to be developed based on their platforms. Therefore, each application has to be ported to other platforms. For example, in case of computer games the programming languages typically used are JAVA, C#, C++, Action Script, and the like. Therefore, an application developed in Action Script programming language may have to be ported to another programming language when not supported by a device platform. Further, new applications are being continuously developed for different device platforms.
Generally, it may be desirable to translate a program code written in a source computer language for a source Operating System (OS) or device platform into multiple target computer languages for various target operating systems or device platforms. However, the translation may be difficult to perform duo to various challenges. One of the major challenges is to manage feature conflicts between the ‘source language and the source OS’ pair and the ‘target language and the target OS’ pair. For example, a language feature such as ‘For statement’ is available in both C++ and JAVA programming languages. However, the feature of ‘Operator Overloading’ is available in C++ but absent in JAVA. Therefore, the source program code written in C++ that uses ‘Operator Overloading’ may be difficult or impossible to be translated to JAVA automatically. Further, there may be various lines, modules, or snippets of source code that may not be automatically translatable to the target code. Such lines, modules, snippets, methods or functions may be referred to as non-common features.
Generally, a programmer may be required to read and understand the source code to introduce changes so that translation can be performed. Further, in case of automatic translation by Computers, the non-common features may be removed from the source code to generate partial target code. As a result, the target code may be rendered non-functional. Therefore, the programmer may be required to read and understand the partial code to make it functional.
The programmers must test the changes made in the source code to ensure proper functionality. Further, regression tests may be performed on the source code to check the functionality. Generally, the source code may be tested and regression tested in a test environment that is designed for the source code and source platform pair. However, the same test harness is not functional in the target code and target platform pair. Therefore, the programmer may be required to put a lot of effort for building test environments and conducting tests. Therefore, the testing of the program code results in a lengthy and time-consuming translation process. Further, the time and effort required increase exponentially with the number of target codes and platforms. As a result, the existing techniques are not scalable.
In light of the above discussion, techniques are therefore desirable to manage non-common features during program code translation.